package negocio;

import java.util.ArrayList;
import java.util.Random;

import modelo.Banco;
import modelo.Evento;
import modelo.Lugar;
import modelo.Tablero;
import modelo.Tiempo;
import utils.Constantes;

public class NegocioTablero {
	private static Tablero t = Tablero.getInstacia();
	
	public static void fijarPosicion(Integer in){
		t.getTiempo().setProgreso(in);
	}
	
	public static void resetPosicion(){
		t.getTiempo().setProgreso(0);
	}
	
	public static Float actualizarInflacion(){
		Random indice = new Random();
				
		// 1/PROB = Probabilidad de cambio de inflacion
		if(indice.nextInt(Constantes.PROBABILIDAD_INFLACION+1) == 0){
			t.setIndiceInflacion(t.getIndiceInflacion() * (float) (indice.nextGaussian() * 0.05 + 1));
		}
		
		return t.getIndiceInflacion();
	}

	public static Evento getEventoBuenoRandom(Integer integer) {
		Random ran = new Random();
		return t.getEventosBuenos().get(ran.nextInt(t.getEventosBuenos().size()));
	}

	public static Evento getEventoMaloRandom(Integer dinero) {
		Random ran = new Random();
		return t.getEventosMal().get(ran.nextInt(t.getEventosMal().size()));
	}

	public static ArrayList<Lugar> getLugares() {
		return new ArrayList<Lugar>(t.getLugares().values());
	}

	public static boolean fechaPagoPrestamo() {
		return (t.getTiempo().getNroSemana() / 4) == 0;
	}
	
	public static Banco getBanco() {
		return (Banco) t.getLugares().get(Constantes.INDICE_BANCO);
	}
	
	public static Integer getPosicion() {
		return t.getPosicion();
	}

	public static void setPosicion(Integer destino) {
		t.setPosicion(destino);
	}

	public static Tiempo getTiempo() {
		return t.getTiempo();
	}

	public static Integer getCostoDesplazamiento() {
		return t.getCosto_desplazamiento();
	}
	
	public static Lugar getLugarPorID(Integer id) {
		return t.getLugares().get(id);
	}
}
